Bingo, Computer Graphics & Game Developer
所有的内容都是根据Ray Tracing Course上的课程所做的笔记, 因此会包含单词释义, 概念记录等等
单词 | 释义 |
---|---|
Radiant flux | 辐射通量 |
Irradiance | 辐射度 |
Radiance | 辐射 |
3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11
10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63
-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1
-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59
H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359
c-16-25.333-24-45-24-59z’/> | 从观察者方向发出的方向 |
| | 面法线 |
| | 指向光源的向量 |
| | 全局光照中反射而来的光线方向 也就是光源在表面上L反射出的间接光照 , 也就是得到 乘以 表示在方向上的投影 在根据平行四边形法则即可得到 |
| | 入射角 |
| | 反射角 |
不同的材质在接受入射光时, 会反射向不同的方向以及吸收不同数量的光
(入射光方向, 光在表面上的点, 出射光方向)
因此称他们的集合为BSDF或者为BxDF 也就是说一个表面既能反射也能折射的现象
双向性: 也就是fr(\omega’, x, \omega) = fr(\omega, x, \omega’) 当出射光变为入射光再次计算 结果得到原来的入射光方向
正性: BRDF的fr(\omega’, x, \omega) ≥0
能量守恒: 表面可能会吸收或者反射入射光 但是两者的能量和都不能超过入射光能量
在所有可能的出射(折射 反射的面上积分) 同时也算上了光的衰减现象
(实际为入射光和出射光能量的比值) \le1 如果=1那么就是发生了全反射现象 \le1也就是说一部分的光被吸收了 不可能出现能量不守恒的情况
Rendering Equation
单词 | 释义 |
---|---|
从表面点x上离开的辐射度 | |
从表面点x上发射出的辐射度 | |
3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11
10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63
-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1
-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59
H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359
c-16-25.333-24-45-24-59z’/> | 所有外来的入射光引起的出射光的总和 |
| ) | 从给定方向上指向点x的入射辐射度 |
| | BRDF |
| | 光衰减系数 |
最简单的BRDF模型 ambient模型 尽管不是基于物理 但会是一个很好理解的上手模型公式 也就是一个模型将会有不受位置角度影响的基本RGB颜色
单词 | 释义 |
---|---|
I | 光强度 |
环境光系数 | |
环境光光照强度 |
漫反射Diffuse模型
单词 | 释义 |
---|---|
漫反射系数 | |
3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11
10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63
-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1
-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59
H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359
c-16-25.333-24-45-24-59z’/> | 指向光源的向量 |
| | 面法线 |
镜面反射模型Specular
单词 | 释义 |
---|---|
镜面系数 | |
3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11
10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63
-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1
-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59
H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359
c-16-25.333-24-45-24-59z’/> | 指向观察者/摄像机的方向 |
| | 反射光线的方向 |
| | 反光度 |
Phong反射模型就是讲上述三者模型集中在一起的一个最简化的模型
这也就是为什么无论你怎么样变换摄像机的位置, 也就是的方向, 但是漫反射颜色都不会因此发生改变的原因。而镜面反射同理, 是因为一部分高光从表面上反射而来, 也就是与我们的观察方向之间的夹角非常的接近, 这也就使得最终的显示在最终的效果上显得非常明亮的原因。
最终的受过大量简化后的Rendering Equation如下
这只发生在直接光照上, 而间接光照没有考虑在其中, 在光线照射不到的地方, 环境光帮助我们找回了看不见的区域。
注意 这是一个基于物理的渲染的近似 只用于方便理解而做
单词 | 释义 |
---|---|
3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11
10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63
-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1
-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59
H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359
c-16-25.333-24-45-24-59z’/>(θ) | 入射角为时发生反射的可能性 |
| | 当入射角为0的时候, 也就是发现方向, 发生反射的概率,也可以是, 为媒介的传输系数 在真空或者空气下为1 |
因此在反射现象不明显折射现象较为明显的玻璃这些材质时, 最终计算出来的将会非常的接近0
原始的Fresnel equation
因此当传输的介质为真空时, Schlick的近似公式计算出来的只是非常贴近0的, 而原始公式计算出的可能性直接就是0
全反射现象
计算出的结果有一定的可能出现大于1的情况
也就是光从介质系数大的物体中折射到小系数中, 折射光线与法线夹角成90度, 此时折射现象就不再发生。
折射光线那么这时就发生了全反射现象此时
Ray的参数表示形式 , 一般的平面圆的隐式方程表示为, 例如球的一般方程为, 而其参数方程就可以写成
球的方程
Ray的方程
简单的直线方程代入球面坐标求解即可
如若给定一个表面的隐式方程, 那么他的面法线就是该函数在处的梯度, 梯度定义为
例如求椭球形面的面法线
其中a和b为椭球形的曲率
在求得光线与最近物体交点的时候, 我们会排除的情况, 因为时属于自相交情况
一个光源下的阴影计算方式
因此我们可以通过发射shadow ray来近似上述计算结果
在本质上这就是Monte Carlo Integration
新增的为递归项
单词 | 释义 |
---|---|
菲涅尔透射系数(发生折射的概率) | |
透射方向来的光强度 | |
菲涅尔反射系数(发生反射的概率) | |
反射方向来的光强度 | |
任何反射而来的漫反射光照 | |
D] |
可以看到的就是illumination Equation中使用的I本质上是物理空间中不存在的光照强度, 而不是Global illumination中的辐射度计算。
Ray Tracing 中无法做到以下几点
因为在ray tracing当中我们只计算了局部的incoming漫反射光照, 但事实上我们应该采集在整个上半球上的所有入射光, 也就是渲染方程中积分的意义
真实的基于物理的漫反射BRDF模型为, 代表反射率, , 并且下列BRDF也是概率分布函数, 只需要检验.
Diffuse BRDF
在这个模型中, 它将会收集整个半球上的入射光, 那么如果手动射入一根光线, 那么出射光出射在半球上的任意方向上得概率都是一致的。其中, 该BRDF函数也是一个概率分布函数。
镜面反射模型也就意味着如若给定一个入射光方向, 那么出射光的方向只有一个。
Specular BRDF
简单来讲就是一个二项分布
Hit or Miss法
在一张纸上给定的区域内绘制当前的函数
向整个区域打点
记录每个点的Hit/Miss情况
最终结果就可以这样近似
同理也就可以估计的值
如果场景中只有一个面积非常小的点光源, 那么即便是spp足够大, 最终的结果也很有可能是一团黑
原因在于, 只有当发射的ray相交到了一个光源时, 他才会返回一个足够的光亮度, 因此每次在BRDF的概率密度范围内随机反射光线, 只有很小的概率击中光源并返回一个值。
解决方案, 极大的缩短追踪Depth是最终的目标。因此在每次递归到Surface上一点时, 不仅仅只是计算上从随机方向上反射而来得光照, 还需直接计算点到光源之间的通路(间接等价于, 随机发射一条光线到光源方向并返回一个可能的值)。
这就大大的缩短了Path Tracing中需要Sample的光线的数量。同样数量的光线的情况下, 整个场景会显得格外的明亮。
需要注意的是, 如若在Path Tracing中随机hit到了光源, 我们并不直接返回光源的亮度, 因为我们在Path Tracing的过程中已经计算过他的亮度。这也就很好的解耦了直接光照和间接光照。
优点:
当构建一个渲染时, 你不会得到真正的随机采样结果, 因此在渲染一个动画的时候, 你能够得到连贯一致的噪点分布。
缺点:
没有……
问题出在, 渲染方程本质上是一个无穷积分, 因此理论上来说Path Tracing的Depth应该是无穷大, 但事实上不能。因此什么时候结束tracing就成为了一个比较大的问题。
因此我们的目标就是, 使用概率论来解决这个问题, 当完成了第i次迭代之后, 是否停止继续追踪取决于概率, 在一定的概率内随机决定是否要终止当前这条光线。
假定目前有一随机变量
若, 那么继续追踪当前的光线, 最终计算得到的辐射度就为
若, 那么结束当前的光线追踪迭代, 最终计算得到的辐射度为0
可以通过计算期望, 来印证计算结果的正确性。
的取值范围, 这样的情况不会发生, 因为光线一次也不于物体相交(非法); 这样 情况也不会发生, 因为光线追踪永不停止。尽管的取值理论上在这区间内都是可以接受的, 但事实上我们最好选取一个能够让结果更快收敛的概率值。
所以的取值也就非常的关键, 我们总是希望更远的采样那些明亮的路径而不是较为黑不溜秋的路径, 因此我们就可以设为简单的反射率, 这可以极大的降低方差。
一致性算法表示算法本身在经过无穷的随机采样逼近之后, 将会收敛, 但这将会花上非常多的时间。
Bidirectional Path Tracing
遇到了光源在Next Event Estimation也难以处理的情况, 比如光源和摄像机之间存在一层遮罩, 因此只有摄像机发出的光光线随机的走到了光源中才能够返回一个较为明亮的颜色。
关键思想: 从摄像机和光源处同时发射光线, 并且在一定的depth结束彼此的追踪之后, 连接两条路径的结尾点即可。
总结:更快的焦散和计算收敛速度, 尤其是在室内场景中, 但添加上Multiple Importance Sampling和路径的权重似乎会增加计算时间。
Metropolis Light Transport
关键思想: 对于明亮的区域我们会采样更多的次数, 相比于暗处的区域的话。本质上讲就是明亮处采样的概率会更高。
配图为康奈尔盒